#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
FE算法使用的提示词模板集合
"""

############################################ 提示词生成模板
PROMPT_generate_TEMPLATE = """
# 主题

根据输入输出对提供提示词。[TASK]

# 输入

根据你将要提供的提示词，能够产生以下输入-输出对：

[DEMO]

# 输出

分析这个提示词是什么，并结合分析内容给出这个提示词。注意，这个提示词可能比较复杂，采用makdown风格。
请使用以下XML标签封装你的回复:

<analyse>分析过程。</analyse>
<prompt>这个makdown风格的提示词。</prompt>
"""



############################################ 反馈生成模板base
PROMPT_feedback_TEMPLATE = """
# 任务

示例中“模型实际的原始输出”包含推理过程，需要提取为“模型提取后的应用输出”，然后与“预期输出”进行评估得到得分。
根据以下提示词在示例上的表现，进行分析，并生成针对提示词优化的反馈。[TASK]

# 提示词与示例上的表现

[PROMPT and DEMO]

# 输出

请分析给定提示词在示例上的表现（包括优点与不足），并提供具有通用性的具体改进建议。具体改进建议可以比较详细。
请使用以下XML标签封装你的回复:

<analyse>分析过程。</analyse>
<feedback>你的反馈。</feedback>
"""
############################################ 反馈生成模板（增强）
# 错误模式识别模板
PROMPT_error_patterns_TEMPLATE = """
# 任务

分析以下提示词在样本上的表现，识别出系统性错误模式。[TASK]

# 提示词与示例上的表现

[PROMPT and DEMO]

# 输出

请识别出现的错误模式，并按照重要性排序。
请使用以下XML标签封装你的回复:

<error_patterns>出现的错误模式。</error_patterns>
"""

# 根因分析模板
PROMPT_root_cause_TEMPLATE = """
# 任务

对于以下识别出的错误模式，进行深入的根因分析。[TASK]

# 错误模式

[ERROR_PATTERNS]

# 输出

请分析这些错误的根本原因。
请使用以下XML标签封装你的回复:

<root_causes>错误的根本原因。</root_causes>
"""

# 改进建议模板
PROMPT_improvement_TEMPLATE = """
# 任务

基于以下根因分析，提供具体、可操作的改进建议。[TASK]

# 根因分析

[ROOT_CAUSES]

# 输出

请提供改进建议。
请使用以下XML标签封装你的回复:

<improvements>改进建议。</improvements>
"""

# 反馈综合模板
PROMPT_feedback_synthesis_TEMPLATE = """
# 任务

根据错误模式、根因分析和改进建议，综合生成全面的反馈。

# 错误模式

[ERROR_PATTERNS]

# 根因分析

[ROOT_CAUSES]

# 改进建议

[IMPROVEMENTS]

# 输出

生成综合反馈。
请使用以下XML标签封装你的回复:

<feedback>综合反馈。</feedback>
"""

############################################ 知识提取模板
PROMPT_knowledge_extraction_TEMPLATE = """
# 任务

从以下反馈中提取领域特定的知识点，这些知识对于改进提示词具有普遍价值。

# 反馈

[FEEDBACK]

# 输出

请提取关键领域知识，每一条知识为一行。
请使用以下XML标签封装你的回复:

<knowledge>关键领域知识。</knowledge>
"""


############################################ 进化模板
PROMPT_direct_TEMPLATE = {
    "增加": """
在原提示词基础上添加关键信息、约束条件或专业知识，丰富提示词内涵。
""",
    "删减": """
识别并移除可能引起混淆或冗余的内容，提高提示词的精准度。如删除过于宽泛的描述，转而使用更精确的术语和指导。
""",
    "修改": """
调整提示词的逻辑结构、表达方式或关键术语，优化信息传递效率。如将零散的指导整合为结构化步骤，或改变复杂概念的表达方式。
"""
}

############################################ 子代生成模板
PROMPT_child_TEMPLATE = """
# 任务

根据已有提示词和反馈，采用主要改进手段生成改进的提示词。[TASK]

# 提示词

[PROMPT]

# 正确示例

[DEMO]

# 反馈

[FEEDBACK]

# 主要改进手段

[DIRECTION]

# 输出

注意预期输出的格式和正确性。
请根据给出的提示词、正确示例以及反馈进行改进，生成一个新的提示词。注意，新的提示词可以比较复杂，采用makdown风格。
请使用以下XML标签封装你的回复:

<analyse>分析过程。</analyse>
<prompt>新的makdown风格的提示词。</prompt>
"""